import ConfigParser
import os

if os.name == 'posix':  DIRSEP = '/'
if os.name == 'nt':     DIRSEP = '\\'
config = ConfigParser.RawConfigParser()
ready = False


def initMain(config):
    config.add_section('main')
    if not config.has_option('main','host'): config.set('main','host','0.0.0.0')
    if not config.has_option('main','port'): config.set('main','port','8081')
    if not config.has_option('main','root'): config.set('main','root',os.getcwd())

def extMain(config):
    config.set('main','js',     config.get('main','root') + DIRSEP + 'js' + DIRSEP)
    config.set('main','css',    config.get('main','root') + DIRSEP + 'css' + DIRSEP)
    config.set('main','html',   config.get('main','root') + DIRSEP + 'www-data' + DIRSEP)
    config.set('main','image',  config.get('main','root') + DIRSEP + 'images' + DIRSEP)
    config.set('main','dbpath', config.get('main','root') + DIRSEP + 'db' + DIRSEP)
    if not os.path.exists(config.get('main', 'dbpath')):
        os.makedirs(config.get('main','dbpath'))

def initMSDB(config):
    config.add_section('msdb')
    if not config.has_option('msdb','host'): config.set('msdb','host','localhost')
    if not config.has_option('msdb','port'): config.set('msdb','port','1')
    if not config.has_option('msdb','dbname'): config.set('msdb','dbname','noname')
    if not config.has_option('msdb','user'): config.set('msdb','user','anonymous')
    if not config.has_option('msdb','pwd'): config.set('msdb','pwd','')

def initMSAPI(config):
    config.add_section('msapi')
    if not config.has_option('msapi','url'): config.set('msapi', 'url', 'localhost')

def init(path=None, initEmpty=True):
    global config, ready
    if not ready:
        if not path: path = os.getcwd()
        if os.path.exists(path + DIRSEP + 'config.cfg'):
            config.read(path + DIRSEP + 'config.cfg')
        else:
            initMain(config)
            initMSDB(config)
            initMSAPI(config)
        extMain(config)
        ready = True
